Database Tutorials Subqueries এবং Nested Queries গাইড ও নোট

352

Subquery কী?

Subquery হল একটি SQL query যা আরেকটি SQL query এর মধ্যে嵃 nest করা থাকে। এটি মূল query বা outer query এর অংশ হিসেবে কাজ করে এবং সাধারণত WHERE, HAVING, বা FROM clause এর মধ্যে ব্যবহার করা হয়। Subquery এর মাধ্যমে একটি result set তৈরী হয় যা outer query তে ব্যবহৃত হয়।

Subqueries সাধারণত দুটি ধরণের হতে পারে:

  1. Scalar Subquery: এটি একক মান (single value) return করে।
  2. Table Subquery: এটি একাধিক value return করে, যেমন multiple rows এবং columns।

Subquery ব্যবহার

Subqueries বিভিন্নভাবে ব্যবহার করা যেতে পারে, এবং এটি সাধারণত বিভিন্ন পরিস্থিতিতে খুবই কার্যকর। নিচে কিছু উদাহরণ দেওয়া হলো:

1. WHERE Clause এ Subquery

Subquery অনেক সময় WHERE clause এর মধ্যে ব্যবহার করা হয়, যেখানে আপনি মূল query তে একটি condition match করতে চান।

উদাহরণ:

ধরা যাক আমাদের একটি employees টেবিল রয়েছে, যেখানে আমরা সকল employees এর মধ্যে সেগুলোর salary যেগুলি 50000 এর বেশি, এমন employees এর নাম এবং department দেখতে চাই, তবে আমরা প্রথমে department এর নাম খুঁজে বের করবো।

SELECT name, department
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

এখানে inner subquery SELECT AVG(salary) FROM employees গড় salary return করছে, এবং outer query এটি compare করে।

2. FROM Clause এ Subquery

Subquery কে FROM clause এর মধ্যেও ব্যবহার করা যেতে পারে, যেখানে এটি একটি অন্তর্নিহিত টেবিল হিসেবে কাজ করে।

উদাহরণ:

ধরা যাক sales এবং products নামে দুটি টেবিল রয়েছে, এবং আপনি চাচ্ছেন, একাধিক products এর জন্য মোট sales count দেখতে, যেগুলি নির্দিষ্ট range এর মধ্যে রয়েছে।

SELECT product_id, total_sales
FROM (SELECT product_id, COUNT(*) AS total_sales
      FROM sales
      GROUP BY product_id) AS sales_summary
WHERE total_sales > 100;

এখানে inner query sales_summary একটি সাবquery, যা product-wise sales count বের করছে এবং outer query এটি filter করছে total_sales > 100 শর্তে।

3. HAVING Clause এ Subquery

HAVING clause এ subquery ব্যবহার করে, আপনি একটি GROUP BY ফলাফলে filtering করতে পারেন।

উদাহরণ:

আপনি যদি দেখতে চান কোন departments এ মোট employees এর সংখ্যা 10 এর বেশি, তাহলে আপনি HAVING clause এ subquery ব্যবহার করতে পারেন।

SELECT department, COUNT(*) AS total_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > (SELECT AVG(total) FROM (SELECT COUNT(*) AS total FROM employees GROUP BY department) AS dept_counts);

এখানে inner subquery SELECT COUNT(*) AS total বিভাগ অনুযায়ী employees এর সংখ্যা গণনা করছে এবং outer query এটি average total employee সংখ্যা দিয়ে তুলনা করছে।

4. Correlated Subquery

Correlated subquery এমন একটি subquery যা outer query এর সাথে সম্পর্কিত থাকে, অর্থাৎ, inner subquery এর প্রতিটি row একাধিক times execute হয়, কারণ এটি outer query এর প্রতিটি row এর সাথে সম্পর্কিত থাকে।

উদাহরণ:

ধরা যাক, আমাদের orders এবং customers টেবিল রয়েছে। আমরা দেখতে চাই, কোন কোন customer এর order এর price সর্বোচ্চ।

SELECT customer_id, order_id, order_date
FROM orders o
WHERE order_amount = (
    SELECT MAX(order_amount)
    FROM orders
    WHERE customer_id = o.customer_id
);

এখানে, inner query SELECT MAX(order_amount) প্রতিটি customer এর জন্য maximum order amount return করছে, এবং outer query সেই specific maximum order amount এর order গুলি retrieve করছে।

5. Existential Subquery

Existential subquery একটি Boolean value return করে এবং এটি ব্যবহার করা হয় EXISTS keyword এর সাথে। এটি চেক করে যে, inner subquery কোন record return করছে কিনা।

উদাহরণ:

ধরা যাক, আমরা দেখতে চাই এমন customers কে, যাদের কোনো order রয়েছে।

SELECT customer_id, name
FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id);

এখানে inner query চেক করছে, যদি orders টেবিলে কোন row থাকে যেটি সেই customer এর সাথে সম্পর্কিত, তবে outer query সেই customer গুলি return করবে।

6. IN Subquery

IN subquery একটি set of values return করে, এবং এটি WHERE clause এ ব্যবহার করা হয়, যাতে main query এর filter condition match করা যায়।

উদাহরণ:

ধরা যাক, আপনি এমন employees এর নাম দেখতে চান যারা IT department এ কাজ করেন এবং যাদের salary 40000 এর উপরে।

SELECT name
FROM employees
WHERE department IN (SELECT department FROM employees WHERE salary > 40000);

এখানে inner query একটি department এর list return করছে যেগুলোর salary 40000 এর উপরে এবং outer query সেই departments এর employees গুলি return করবে।


Subquery এর সুবিধা

  • Modularity: Complex queries কে ছোট ছোট অংশে ভাগ করা যায়, যা maintenance সহজ করে।
  • Readability: Query গুলি পরিষ্কারভাবে আলাদা করা যায়, এবং এটি debugging সহজ করে।
  • Reusability: একাধিক subqueries একই query তে পুনরায় ব্যবহার করা যায়।

Summary

Subqueries এবং nested queries SQL তে খুবই গুরুত্বপূর্ণ এবং শক্তিশালী টুল। এগুলি complex filtering, aggregation, এবং data retrieval এ সাহায্য করে। Subqueries বেশিরভাগ সময় WHERE, FROM, এবং HAVING ক্লজে ব্যবহৃত হয় এবং এগুলির মধ্যে কোনো একটি subquery অন্যটির মধ্যে থাকা অবস্থায় একটি nested query গঠন হয়। Subquery গুলি কে সঠিকভাবে ব্যবহারের মাধ্যমে কার্যকারিতা বৃদ্ধি এবং code readability উন্নত করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...